#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import os
import sys
import subprocess

def main():
    """
    设置PYTHONPATH并启动主程序core.py
    
    此函数执行以下操作：
    1. 设置PYTHONPATH环境变量以包含本地site-packages目录（如果存在）
    2. 启动core.py作为主程序，并传递所有命令行参数
    3. 处理平台特定的子进程创建选项，确保在Windows和Unix系统上正确处理信号
    
    Returns:
        int: 程序退出码
    """
    script_dir = os.path.dirname(os.path.abspath(__file__))
    site_packages_path = os.path.join(script_dir, 'site-packages')
    
    # 检查site-packages目录是否存在
    if not os.path.exists(site_packages_path):
        print(f"警告: 本地site-packages目录不存在: {site_packages_path}")
        print("将尝试使用系统已安装的依赖包")
    else:
        # 设置PYTHONPATH以优先使用本地site-packages
        current_python_path = os.environ.get('PYTHONPATH', '')
        if current_python_path:
            new_python_path = f"{site_packages_path};{current_python_path}"
        else:
            new_python_path = site_packages_path
        
        os.environ['PYTHONPATH'] = new_python_path
    
    # 启动core.py作为主程序
    main_script = os.path.join(script_dir, 'core.py')
    if not os.path.exists(main_script):
        print(f"错误: 找不到核心程序文件: {main_script}")
        return 1
    
    # 准备命令参数
    args = sys.argv[1:]
    cmd = [sys.executable, main_script] + args
    
    try:
        # 根据平台使用不同的子进程创建选项
        if sys.platform.startswith('win'):
            # 在Windows上使用CREATE_NEW_PROCESS_GROUP以允许正确处理Ctrl+C
            result = subprocess.run(cmd, check=False, creationflags=0x00000200)
        else:
            # 在Unix系统上运行子进程
            result = subprocess.run(cmd, check=False)
        return result.returncode
    except KeyboardInterrupt:
        print("\n程序被用户中断")
        return 130
    except Exception as e:
        print(f"运行核心程序时出错: {str(e)}")
        return 1

if __name__ == "__main__":

    sys.exit(main())
